home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / fontconfig / fontconfig.h < prev   
C/C++ Source or Header  |  2005-10-16  |  18KB  |  819 lines

  1. /*
  2.  * $RCSId: xc/lib/fontconfig/fontconfig/fontconfig.h,v 1.30 2002/09/26 00:17:27 keithp Exp $
  3.  *
  4.  * Copyright ⌐ 2001 Keith Packard
  5.  *
  6.  * Permission to use, copy, modify, distribute, and sell this software and its
  7.  * documentation for any purpose is hereby granted without fee, provided that
  8.  * the above copyright notice appear in all copies and that both that
  9.  * copyright notice and this permission notice appear in supporting
  10.  * documentation, and that the name of Keith Packard not be used in
  11.  * advertising or publicity pertaining to distribution of the software without
  12.  * specific, written prior permission.  Keith Packard makes no
  13.  * representations about the suitability of this software for any purpose.  It
  14.  * is provided "as is" without express or implied warranty.
  15.  *
  16.  * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  17.  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
  18.  * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  19.  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  20.  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  21.  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  22.  * PERFORMANCE OF THIS SOFTWARE.
  23.  */
  24.  
  25. #ifndef _FONTCONFIG_H_
  26. #define _FONTCONFIG_H_
  27.  
  28. #include <stdarg.h>
  29.  
  30. typedef unsigned char    FcChar8;
  31. typedef unsigned short    FcChar16;
  32. typedef unsigned int    FcChar32;
  33. typedef int        FcBool;
  34.  
  35. /*
  36.  * Current Fontconfig version number.  This same number
  37.  * must appear in the fontconfig configure.in file. Yes,
  38.  * it'a a pain to synchronize version numbers like this.
  39.  */
  40.  
  41. #define FC_MAJOR    2
  42. #define FC_MINOR    2
  43. #define FC_REVISION    3
  44.  
  45. #define FC_VERSION    ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
  46.  
  47. /*
  48.  * Current font cache file format version
  49.  * This is appended to the cache files so that multiple
  50.  * versions of the library will peacefully coexist
  51.  *
  52.  * Change this value whenever the disk format for the cache file
  53.  * changes in any non-compatible way.  Try to avoid such changes as
  54.  * it means multiple copies of the font information.
  55.  */
  56.  
  57. #define FC_CACHE_VERSION    "1"
  58.  
  59. #define FcTrue        1
  60. #define FcFalse        0
  61.  
  62. #define FC_FAMILY        "family"        /* String */
  63. #define FC_STYLE        "style"        /* String */
  64. #define FC_SLANT        "slant"        /* Int */
  65. #define FC_WEIGHT        "weight"        /* Int */
  66. #define FC_SIZE            "size"        /* Double */
  67. #define FC_ASPECT        "aspect"        /* Double */
  68. #define FC_PIXEL_SIZE        "pixelsize"        /* Double */
  69. #define FC_SPACING        "spacing"        /* Int */
  70. #define FC_FOUNDRY        "foundry"        /* String */
  71. #define FC_ANTIALIAS        "antialias"        /* Bool (depends) */
  72. #define FC_HINTING        "hinting"        /* Bool (true) */
  73. #define FC_HINT_STYLE        "hintstyle"        /* Int */
  74. #define FC_VERTICAL_LAYOUT  "verticallayout"    /* Bool (false) */
  75. #define FC_AUTOHINT        "autohint"        /* Bool (false) */
  76. #define FC_GLOBAL_ADVANCE   "globaladvance"    /* Bool (true) */
  77. #define FC_WIDTH        "width"        /* Int */
  78. #define FC_FILE            "file"        /* String */
  79. #define FC_INDEX        "index"        /* Int */
  80. #define FC_FT_FACE        "ftface"        /* FT_Face */
  81. #define FC_RASTERIZER        "rasterizer"    /* String */
  82. #define FC_OUTLINE        "outline"        /* Bool */
  83. #define FC_SCALABLE        "scalable"        /* Bool */
  84. #define FC_SCALE        "scale"        /* double */
  85. #define FC_DPI            "dpi"        /* double */
  86. #define FC_RGBA            "rgba"        /* Int */
  87. #define FC_MINSPACE        "minspace"        /* Bool use minimum line spacing */
  88. #define FC_SOURCE        "source"        /* String (X11, freetype) */
  89. #define FC_CHARSET        "charset"        /* CharSet */
  90. #define FC_LANG            "lang"        /* String RFC 3066 langs */
  91. #define FC_FONTVERSION        "fontversion"    /* Int from 'head' table */
  92.  
  93. #define FC_DIR_CACHE_FILE        "fonts.cache-"FC_CACHE_VERSION
  94. #define FC_USER_CACHE_FILE        ".fonts.cache-"FC_CACHE_VERSION
  95.  
  96. /* Adjust outline rasterizer */
  97. #define FC_CHAR_WIDTH        "charwidth"    /* Int */
  98. #define FC_CHAR_HEIGHT        "charheight"/* Int */
  99. #define FC_MATRIX        "matrix"    /* FcMatrix */
  100.  
  101. #define FC_WEIGHT_THIN            0
  102. #define FC_WEIGHT_EXTRALIGHT        40
  103. #define FC_WEIGHT_ULTRALIGHT        FC_WEIGHT_EXTRALIGHT
  104. #define FC_WEIGHT_LIGHT            50
  105. #define FC_WEIGHT_REGULAR        80
  106. #define FC_WEIGHT_NORMAL        FC_WEIGHT_REGULAR
  107. #define FC_WEIGHT_MEDIUM        100
  108. #define FC_WEIGHT_DEMIBOLD        180
  109. #define FC_WEIGHT_SEMIBOLD        FC_WEIGHT_DEMIBOLD
  110. #define FC_WEIGHT_BOLD            200
  111. #define FC_WEIGHT_EXTRABOLD        205
  112. #define FC_WEIGHT_ULTRABOLD        FC_WEIGHT_EXTRABOLD
  113. #define FC_WEIGHT_BLACK            210
  114. #define FC_WEIGHT_HEAVY            FC_WEIGHT_BLACK
  115.  
  116. #define FC_SLANT_ROMAN            0
  117. #define FC_SLANT_ITALIC            100
  118. #define FC_SLANT_OBLIQUE        110
  119.  
  120. #define FC_WIDTH_ULTRACONDENSED        50
  121. #define FC_WIDTH_EXTRACONDENSED        63
  122. #define FC_WIDTH_CONDENSED        75
  123. #define FC_WIDTH_SEMICONDENSED        87
  124. #define FC_WIDTH_NORMAL            100
  125. #define FC_WIDTH_SEMIEXPANDED        113
  126. #define FC_WIDTH_EXPANDED        125
  127. #define FC_WIDTH_EXTRAEXPANDED        150
  128. #define FC_WIDTH_ULTRAEXPANDED        200
  129.  
  130. #define FC_PROPORTIONAL            0
  131. #define FC_MONO                100
  132. #define FC_CHARCELL            110
  133.  
  134. /* sub-pixel order */
  135. #define FC_RGBA_UNKNOWN        0
  136. #define FC_RGBA_RGB        1
  137. #define FC_RGBA_BGR        2
  138. #define FC_RGBA_VRGB        3
  139. #define FC_RGBA_VBGR        4
  140. #define FC_RGBA_NONE        5
  141.  
  142. /* hinting style */
  143. #define FC_HINT_NONE        0
  144. #define FC_HINT_SLIGHT      1
  145. #define FC_HINT_MEDIUM      2
  146. #define FC_HINT_FULL        3
  147.  
  148. typedef enum _FcType {
  149.     FcTypeVoid, 
  150.     FcTypeInteger, 
  151.     FcTypeDouble, 
  152.     FcTypeString, 
  153.     FcTypeBool,
  154.     FcTypeMatrix,
  155.     FcTypeCharSet,
  156.     FcTypeFTFace,
  157.     FcTypeLangSet
  158. } FcType;
  159.  
  160. typedef struct _FcMatrix {
  161.     double xx, xy, yx, yy;
  162. } FcMatrix;
  163.  
  164. #define FcMatrixInit(m)    ((m)->xx = (m)->yy = 1, \
  165.              (m)->xy = (m)->yx = 0)
  166.  
  167. /*
  168.  * A data structure to represent the available glyphs in a font.
  169.  * This is represented as a sparse boolean btree.
  170.  */
  171.  
  172. typedef struct _FcCharSet FcCharSet;
  173.  
  174. typedef struct _FcObjectType {
  175.     const char    *object;
  176.     FcType    type;
  177. } FcObjectType;
  178.  
  179. typedef struct _FcConstant {
  180.     const FcChar8  *name;
  181.     const char    *object;
  182.     int        value;
  183. } FcConstant;
  184.  
  185. typedef enum _FcResult {
  186.     FcResultMatch, FcResultNoMatch, FcResultTypeMismatch, FcResultNoId
  187. } FcResult;
  188.  
  189. typedef struct _FcPattern   FcPattern;
  190.  
  191. typedef struct _FcLangSet   FcLangSet;
  192.  
  193. typedef struct _FcValue {
  194.     FcType    type;
  195.     union {
  196.     const FcChar8    *s;
  197.     int        i;
  198.     FcBool        b;
  199.     double        d;
  200.     const FcMatrix    *m;
  201.     const FcCharSet    *c;
  202.     void        *f;
  203.     const FcPattern    *p;
  204.     const FcLangSet    *l;
  205.     } u;
  206. } FcValue;
  207.  
  208. typedef struct _FcFontSet {
  209.     int        nfont;
  210.     int        sfont;
  211.     FcPattern    **fonts;
  212. } FcFontSet;
  213.  
  214. typedef struct _FcObjectSet {
  215.     int        nobject;
  216.     int        sobject;
  217.     const char    **objects;
  218. } FcObjectSet;
  219.     
  220. typedef enum _FcMatchKind {
  221.     FcMatchPattern, FcMatchFont
  222. } FcMatchKind;
  223.  
  224. typedef enum _FcLangResult {
  225.     FcLangEqual, FcLangDifferentCountry, FcLangDifferentLang
  226. } FcLangResult;
  227.  
  228. typedef enum _FcSetName {
  229.     FcSetSystem = 0,
  230.     FcSetApplication = 1
  231. } FcSetName;
  232.  
  233. typedef struct _FcAtomic FcAtomic;
  234.  
  235. #if defined(__cplusplus) || defined(c_plusplus) /* for C++ V2.0 */
  236. #define _FCFUNCPROTOBEGIN extern "C" {    /* do not leave open across includes */
  237. #define _FCFUNCPROTOEND }
  238. #else
  239. #define _FCFUNCPROTOBEGIN
  240. #define _FCFUNCPROTOEND
  241. #endif
  242.  
  243. typedef enum { FcEndianBig, FcEndianLittle } FcEndian;
  244.  
  245. typedef struct _FcConfig    FcConfig;
  246.  
  247. typedef struct _FcGlobalCache    FcFileCache;
  248.  
  249. typedef struct _FcBlanks    FcBlanks;
  250.  
  251. typedef struct _FcStrList   FcStrList;
  252.  
  253. typedef struct _FcStrSet    FcStrSet;
  254.  
  255. _FCFUNCPROTOBEGIN
  256.  
  257. FcBool
  258. FcDirCacheValid (const FcChar8 *cache_file);
  259.  
  260. /* fcblanks.c */
  261. FcBlanks *
  262. FcBlanksCreate (void);
  263.  
  264. void
  265. FcBlanksDestroy (FcBlanks *b);
  266.  
  267. FcBool
  268. FcBlanksAdd (FcBlanks *b, FcChar32 ucs4);
  269.  
  270. FcBool
  271. FcBlanksIsMember (FcBlanks *b, FcChar32 ucs4);
  272.  
  273. /* fccfg.c */
  274. FcChar8 *
  275. FcConfigHome (void);
  276.  
  277. FcBool
  278. FcConfigEnableHome (FcBool enable);
  279.  
  280. FcChar8 *
  281. FcConfigFilename (const FcChar8 *url);
  282.     
  283. FcConfig *
  284. FcConfigCreate (void);
  285.  
  286. void
  287. FcConfigDestroy (FcConfig *config);
  288.  
  289. FcBool
  290. FcConfigSetCurrent (FcConfig *config);
  291.  
  292. FcConfig *
  293. FcConfigGetCurrent (void);
  294.  
  295. FcBool
  296. FcConfigUptoDate (FcConfig *config);
  297.     
  298. FcBool
  299. FcConfigBuildFonts (FcConfig *config);
  300.  
  301. FcStrList *
  302. FcConfigGetFontDirs (FcConfig   *config);
  303.  
  304. FcStrList *
  305. FcConfigGetConfigDirs (FcConfig   *config);
  306.  
  307. FcStrList *
  308. FcConfigGetConfigFiles (FcConfig    *config);
  309.  
  310. FcChar8 *
  311. FcConfigGetCache (FcConfig  *config);
  312.  
  313. FcBlanks *
  314. FcConfigGetBlanks (FcConfig *config);
  315.  
  316. int
  317. FcConfigGetRescanInverval (FcConfig *config);
  318.  
  319. FcBool
  320. FcConfigSetRescanInverval (FcConfig *config, int rescanInterval);
  321.  
  322. FcFontSet *
  323. FcConfigGetFonts (FcConfig    *config,
  324.           FcSetName    set);
  325.  
  326. FcBool
  327. FcConfigAppFontAddFile (FcConfig    *config,
  328.             const FcChar8  *file);
  329.  
  330. FcBool
  331. FcConfigAppFontAddDir (FcConfig        *config,
  332.                const FcChar8   *dir);
  333.  
  334. void
  335. FcConfigAppFontClear (FcConfig        *config);
  336.  
  337. FcBool
  338. FcConfigSubstituteWithPat (FcConfig    *config,
  339.                FcPattern    *p,
  340.                FcPattern    *p_pat,
  341.                FcMatchKind    kind);
  342.  
  343. FcBool
  344. FcConfigSubstitute (FcConfig    *config,
  345.             FcPattern    *p,
  346.             FcMatchKind    kind);
  347.  
  348. /* fccharset.c */
  349. FcCharSet *
  350. FcCharSetCreate (void);
  351.  
  352. void
  353. FcCharSetDestroy (FcCharSet *fcs);
  354.  
  355. FcBool
  356. FcCharSetAddChar (FcCharSet *fcs, FcChar32 ucs4);
  357.  
  358. FcCharSet *
  359. FcCharSetCopy (FcCharSet *src);
  360.  
  361. FcBool
  362. FcCharSetEqual (const FcCharSet *a, const FcCharSet *b);
  363.  
  364. FcCharSet *
  365. FcCharSetIntersect (const FcCharSet *a, const FcCharSet *b);
  366.  
  367. FcCharSet *
  368. FcCharSetUnion (const FcCharSet *a, const FcCharSet *b);
  369.  
  370. FcCharSet *
  371. FcCharSetSubtract (const FcCharSet *a, const FcCharSet *b);
  372.  
  373. FcBool
  374. FcCharSetHasChar (const FcCharSet *fcs, FcChar32 ucs4);
  375.  
  376. FcChar32
  377. FcCharSetCount (const FcCharSet *a);
  378.  
  379. FcChar32
  380. FcCharSetIntersectCount (const FcCharSet *a, const FcCharSet *b);
  381.  
  382. FcChar32
  383. FcCharSetSubtractCount (const FcCharSet *a, const FcCharSet *b);
  384.  
  385. FcBool
  386. FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b);
  387.  
  388. #define FC_CHARSET_MAP_SIZE (256/32)
  389. #define FC_CHARSET_DONE    ((FcChar32) -1)
  390.  
  391. FcChar32
  392. FcCharSetFirstPage (const FcCharSet *a, 
  393.             FcChar32        map[FC_CHARSET_MAP_SIZE],
  394.             FcChar32        *next);
  395.  
  396. FcChar32
  397. FcCharSetNextPage (const FcCharSet  *a, 
  398.            FcChar32        map[FC_CHARSET_MAP_SIZE],
  399.            FcChar32        *next);
  400.  
  401.  
  402. /* fcdbg.c */
  403. void
  404. FcValuePrint (const FcValue v);
  405.  
  406. void
  407. FcPatternPrint (const FcPattern *p);
  408.  
  409. void
  410. FcFontSetPrint (const FcFontSet *s);
  411.  
  412. /* fcdefault.c */
  413. void
  414. FcDefaultSubstitute (FcPattern *pattern);
  415.  
  416. /* fcdir.c */
  417. FcBool
  418. FcFileScan (FcFontSet        *set,
  419.         FcStrSet        *dirs,
  420.         FcFileCache        *cache,
  421.         FcBlanks        *blanks,
  422.         const FcChar8   *file,
  423.         FcBool        force);
  424.  
  425. FcBool
  426. FcDirScan (FcFontSet        *set,
  427.        FcStrSet        *dirs,
  428.        FcFileCache        *cache,
  429.        FcBlanks        *blanks,
  430.        const FcChar8    *dir,
  431.        FcBool        force);
  432.  
  433. FcBool
  434. FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
  435.  
  436. /* fcfreetype.c */
  437. FcPattern *
  438. FcFreeTypeQuery (const FcChar8 *file, int id, FcBlanks *blanks, int *count);
  439.  
  440. /* fcfs.c */
  441.  
  442. FcFontSet *
  443. FcFontSetCreate (void);
  444.  
  445. void
  446. FcFontSetDestroy (FcFontSet *s);
  447.  
  448. FcBool
  449. FcFontSetAdd (FcFontSet *s, FcPattern *font);
  450.  
  451. /* fcinit.c */
  452. FcConfig *
  453. FcInitLoadConfig (void);
  454.  
  455. FcConfig *
  456. FcInitLoadConfigAndFonts (void);
  457.  
  458. FcBool
  459. FcInit (void);
  460.  
  461. int
  462. FcGetVersion (void);
  463.  
  464. FcBool
  465. FcInitReinitialize (void);
  466.  
  467. FcBool
  468. FcInitBringUptoDate (void);
  469.  
  470. /* fclang.c */
  471. FcLangSet *
  472. FcLangSetCreate (void);
  473.  
  474. void
  475. FcLangSetDestroy (FcLangSet *ls);
  476.  
  477. FcLangSet *
  478. FcLangSetCopy (const FcLangSet *ls);
  479.  
  480. FcBool
  481. FcLangSetAdd (FcLangSet *ls, const FcChar8 *lang);
  482.  
  483. FcLangResult
  484. FcLangSetHasLang (const FcLangSet *ls, const FcChar8 *lang);
  485.  
  486. FcLangResult
  487. FcLangSetCompare (const FcLangSet *lsa, const FcLangSet *lsb);
  488.  
  489. FcBool
  490. FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb);
  491.  
  492. FcBool
  493. FcLangSetEqual (const FcLangSet *lsa, const FcLangSet *lsb);
  494.  
  495. FcChar32
  496. FcLangSetHash (const FcLangSet *ls);
  497.  
  498. /* fclist.c */
  499. FcObjectSet *
  500. FcObjectSetCreate (void);
  501.  
  502. FcBool
  503. FcObjectSetAdd (FcObjectSet *os, const char *object);
  504.  
  505. void
  506. FcObjectSetDestroy (FcObjectSet *os);
  507.  
  508. FcObjectSet *
  509. FcObjectSetVaBuild (const char *first, va_list va);
  510.  
  511. FcObjectSet *
  512. FcObjectSetBuild (const char *first, ...);
  513.  
  514. FcFontSet *
  515. FcFontSetList (FcConfig        *config,
  516.            FcFontSet    **sets,
  517.            int        nsets,
  518.            FcPattern    *p,
  519.            FcObjectSet  *os);
  520.  
  521. FcFontSet *
  522. FcFontList (FcConfig    *config,
  523.         FcPattern    *p,
  524.         FcObjectSet *os);
  525.  
  526. /* fcatomic.c */
  527.  
  528. FcAtomic *
  529. FcAtomicCreate (const FcChar8   *file);
  530.  
  531. FcBool
  532. FcAtomicLock (FcAtomic *atomic);
  533.  
  534. FcChar8 *
  535. FcAtomicNewFile (FcAtomic *atomic);
  536.  
  537. FcChar8 *
  538. FcAtomicOrigFile (FcAtomic *atomic);
  539.  
  540. FcBool
  541. FcAtomicReplaceOrig (FcAtomic *atomic);
  542.  
  543. void
  544. FcAtomicDeleteNew (FcAtomic *atomic);
  545.  
  546. void
  547. FcAtomicUnlock (FcAtomic *atomic);
  548.  
  549. void
  550. FcAtomicDestroy (FcAtomic *atomic);
  551.  
  552. /* fcmatch.c */
  553. FcPattern *
  554. FcFontSetMatch (FcConfig    *config,
  555.         FcFontSet   **sets,
  556.         int        nsets,
  557.         FcPattern   *p,
  558.         FcResult    *result);
  559.  
  560. FcPattern *
  561. FcFontMatch (FcConfig    *config,
  562.          FcPattern    *p, 
  563.          FcResult    *result);
  564.  
  565. FcPattern *
  566. FcFontRenderPrepare (FcConfig        *config,
  567.              FcPattern        *pat,
  568.              FcPattern        *font);
  569.  
  570. FcFontSet *
  571. FcFontSetSort (FcConfig        *config,
  572.            FcFontSet    **sets,
  573.            int        nsets,
  574.            FcPattern    *p,
  575.            FcBool        trim,
  576.            FcCharSet    **csp,
  577.            FcResult        *result);
  578.  
  579. FcFontSet *
  580. FcFontSort (FcConfig     *config,
  581.         FcPattern    *p,
  582.         FcBool     trim,
  583.         FcCharSet    **csp,
  584.         FcResult     *result);
  585.  
  586. void
  587. FcFontSetSortDestroy (FcFontSet *fs);
  588.  
  589. /* fcmatrix.c */
  590. FcMatrix *
  591. FcMatrixCopy (const FcMatrix *mat);
  592.  
  593. FcBool
  594. FcMatrixEqual (const FcMatrix *mat1, const FcMatrix *mat2);
  595.  
  596. void
  597. FcMatrixMultiply (FcMatrix *result, const FcMatrix *a, const FcMatrix *b);
  598.  
  599. void
  600. FcMatrixRotate (FcMatrix *m, double c, double s);
  601.  
  602. void
  603. FcMatrixScale (FcMatrix *m, double sx, double sy);
  604.  
  605. void
  606. FcMatrixShear (FcMatrix *m, double sh, double sv);
  607.  
  608. /* fcname.c */
  609.  
  610. FcBool
  611. FcNameRegisterObjectTypes (const FcObjectType *types, int ntype);
  612.  
  613. FcBool
  614. FcNameUnregisterObjectTypes (const FcObjectType *types, int ntype);
  615.     
  616. const FcObjectType *
  617. FcNameGetObjectType (const char *object);
  618.  
  619. FcBool
  620. FcNameRegisterConstants (const FcConstant *consts, int nconsts);
  621.  
  622. FcBool
  623. FcNameUnregisterConstants (const FcConstant *consts, int nconsts);
  624.     
  625. const FcConstant *
  626. FcNameGetConstant (FcChar8 *string);
  627.  
  628. FcBool
  629. FcNameConstant (FcChar8 *string, int *result);
  630.  
  631. FcPattern *
  632. FcNameParse (const FcChar8 *name);
  633.  
  634. FcChar8 *
  635. FcNameUnparse (FcPattern *pat);
  636.  
  637. /* fcpat.c */
  638. FcPattern *
  639. FcPatternCreate (void);
  640.  
  641. FcPattern *
  642. FcPatternDuplicate (const FcPattern *p);
  643.  
  644. void
  645. FcPatternReference (FcPattern *p);
  646.  
  647. void
  648. FcValueDestroy (FcValue v);
  649.  
  650. FcBool
  651. FcValueEqual (FcValue va, FcValue vb);
  652.  
  653. FcValue
  654. FcValueSave (FcValue v);
  655.  
  656. void
  657. FcPatternDestroy (FcPattern *p);
  658.  
  659. FcBool
  660. FcPatternEqual (const FcPattern *pa, const FcPattern *pb);
  661.  
  662. FcBool
  663. FcPatternEqualSubset (const FcPattern *pa, const FcPattern *pb, const FcObjectSet *os);
  664.  
  665. FcChar32
  666. FcPatternHash (const FcPattern *p);
  667.  
  668. FcBool
  669. FcPatternAdd (FcPattern *p, const char *object, FcValue value, FcBool append);
  670.     
  671. FcBool
  672. FcPatternAddWeak (FcPattern *p, const char *object, FcValue value, FcBool append);
  673.     
  674. FcResult
  675. FcPatternGet (const FcPattern *p, const char *object, int id, FcValue *v);
  676.     
  677. FcBool
  678. FcPatternDel (FcPattern *p, const char *object);
  679.  
  680. FcBool
  681. FcPatternAddInteger (FcPattern *p, const char *object, int i);
  682.  
  683. FcBool
  684. FcPatternAddDouble (FcPattern *p, const char *object, double d);
  685.  
  686. FcBool
  687. FcPatternAddString (FcPattern *p, const char *object, const FcChar8 *s);
  688.  
  689. FcBool
  690. FcPatternAddMatrix (FcPattern *p, const char *object, const FcMatrix *s);
  691.  
  692. FcBool
  693. FcPatternAddCharSet (FcPattern *p, const char *object, const FcCharSet *c);
  694.  
  695. FcBool
  696. FcPatternAddBool (FcPattern *p, const char *object, FcBool b);
  697.  
  698. FcBool
  699. FcPatternAddLangSet (FcPattern *p, const char *object, const FcLangSet *ls);
  700.  
  701. FcResult
  702. FcPatternGetInteger (const FcPattern *p, const char *object, int n, int *i);
  703.  
  704. FcResult
  705. FcPatternGetDouble (const FcPattern *p, const char *object, int n, double *d);
  706.  
  707. FcResult
  708. FcPatternGetString (const FcPattern *p, const char *object, int n, FcChar8 ** s);
  709.  
  710. FcResult
  711. FcPatternGetMatrix (const FcPattern *p, const char *object, int n, FcMatrix **s);
  712.  
  713. FcResult
  714. FcPatternGetCharSet (const FcPattern *p, const char *object, int n, FcCharSet **c);
  715.  
  716. FcResult
  717. FcPatternGetBool (const FcPattern *p, const char *object, int n, FcBool *b);
  718.  
  719. FcResult
  720. FcPatternGetLangSet (const FcPattern *p, const char *object, int n, FcLangSet **ls);
  721.  
  722. FcPattern *
  723. FcPatternVaBuild (FcPattern *orig, va_list va);
  724.     
  725. FcPattern *
  726. FcPatternBuild (FcPattern *orig, ...);
  727.  
  728. /* fcstr.c */
  729.  
  730. FcChar8 *
  731. FcStrCopy (const FcChar8 *s);
  732.  
  733. FcChar8 *
  734. FcStrCopyFilename (const FcChar8 *s);
  735.     
  736. #define FcIsUpper(c)    (('A' <= (c) && (c) <= 'Z'))
  737. #define FcIsLower(c)    (('a' <= (c) && (c) <= 'z'))
  738. #define FcToLower(c)    (FcIsUpper(c) ? (c) - 'A' + 'a' : (c))
  739.  
  740. int
  741. FcStrCmpIgnoreCase (const FcChar8 *s1, const FcChar8 *s2);
  742.  
  743. int
  744. FcStrCmp (const FcChar8 *s1, const FcChar8 *s2);
  745.  
  746. int
  747. FcUtf8ToUcs4 (const FcChar8 *src_orig,
  748.           FcChar32        *dst,
  749.           int        len);
  750.  
  751. FcBool
  752. FcUtf8Len (const FcChar8    *string,
  753.        int            len,
  754.        int            *nchar,
  755.        int            *wchar);
  756.  
  757. #define FC_UTF8_MAX_LEN    6
  758.  
  759. int
  760. FcUcs4ToUtf8 (FcChar32    ucs4,
  761.           FcChar8    dest[FC_UTF8_MAX_LEN]);
  762.  
  763. int
  764. FcUtf16ToUcs4 (const FcChar8    *src_orig,
  765.            FcEndian        endian,
  766.            FcChar32        *dst,
  767.            int        len);        /* in bytes */
  768.  
  769. FcBool
  770. FcUtf16Len (const FcChar8   *string,
  771.         FcEndian        endian,
  772.         int            len,        /* in bytes */
  773.         int            *nchar,
  774.         int            *wchar);
  775.  
  776. FcChar8 *
  777. FcStrDirname (const FcChar8 *file);
  778.  
  779. FcChar8 *
  780. FcStrBasename (const FcChar8 *file);
  781.  
  782. FcStrSet *
  783. FcStrSetCreate (void);
  784.  
  785. FcBool
  786. FcStrSetMember (FcStrSet *set, const FcChar8 *s);
  787.  
  788. FcBool
  789. FcStrSetEqual (FcStrSet *sa, FcStrSet *sb);
  790.  
  791. FcBool
  792. FcStrSetAdd (FcStrSet *set, const FcChar8 *s);
  793.  
  794. FcBool
  795. FcStrSetAddFilename (FcStrSet *set, const FcChar8 *s);
  796.  
  797. FcBool
  798. FcStrSetDel (FcStrSet *set, const FcChar8 *s);
  799.  
  800. void
  801. FcStrSetDestroy (FcStrSet *set);
  802.  
  803. FcStrList *
  804. FcStrListCreate (FcStrSet *set);
  805.  
  806. FcChar8 *
  807. FcStrListNext (FcStrList *list);
  808.  
  809. void
  810. FcStrListDone (FcStrList *list);
  811.  
  812. /* fcxml.c */
  813. FcBool
  814. FcConfigParseAndLoad (FcConfig *config, const FcChar8 *file, FcBool complain);
  815.  
  816. _FCFUNCPROTOEND
  817.  
  818. #endif /* _FONTCONFIG_H_ */
  819.